package homework;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Set;

public class doudizhufapai {
    public static void main(String[] args) {
        HashMap<Integer, String> hm = new HashMap<>();

        int count = 0;
        hm.put(count++, "大王");
        hm.put(count++, "小王");

        ArrayList<String> colors = new ArrayList<>();
        ArrayList<String> num = new ArrayList<>();

        Collections.addAll(colors, "♠", "❤", "♣", "♦");
        Collections.addAll(num, "2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3");

        for (String s : num) {
            //n:"2", "A", "K", "Q", "J"
            for (String color : colors) {
                hm.put(count++, color + s);//1
            }
        }
        System.out.println(hm);

        //洗牌,洗编号,因为编号键绑定牌值,通过编号可以找到牌,集合工具类,随机置换,要求用的list集合,键的集合编号集合
        Set<Integer> keyset = hm.keySet();//编号集合,有序集合随机置换方法要求做
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.addAll(keyset);//numberList编号集合在这里了
        Collections.shuffle(list);//打乱了,所有编号

        //发牌,发编号,按照一定的条件来发,因为编号键绑定牌值,通过编号可以找到牌
        //编号集合,每一个人都有一个,三个玩家,底牌
        ArrayList<Integer> one = new ArrayList<>();//部分编号
        ArrayList<Integer> two = new ArrayList<>();
        ArrayList<Integer> three = new ArrayList<>();
        ArrayList<Integer> last = new ArrayList<>();

        for (int i = 0; i < list.size(); i++) {
            Integer n = list.get(i);//总的编号集合,每一个编号,根据编号集合的索引来分配
            if (i >= list.size() - 3) {
                last.add(n);//每一个人,拿到自己编号集合,但是里面编号不是排序好,打乱的
            } else if (i % 3 == 0) {
                one.add(n);
            } else if (i % 3 == 1) {
                two.add(n);
            } else {
                three.add(n);
            }
        }
        //每一个人编号集合里面编号有序,牌就有序,因为编号键绑定牌值,工具类
        Collections.sort(one);//0,1..
        Collections.sort(two);
        Collections.sort(three);
        Collections.sort(last);

        //编号排好序,编号键绑定牌值,每一个编号找到每一个张牌,存到各种牌集合里面,玩家牌集合,...牌集合存储牌
        ArrayList<String> 卢本伟 = new ArrayList<String>();
        ArrayList<String> 阿姨 = new ArrayList<String>();
        ArrayList<String> 十七张牌能秒杀卢本伟 = new ArrayList<String>();
        ArrayList<String> 底牌 = new ArrayList<String>();

        for (Integer i : one) {//遍历编号集合,每一个编号,找到每一张牌
            String value = hm.get(i);//根据编号,找到每一张牌
            卢本伟.add(value);//存储到玩家牌集合
        }
        for (Integer i : two) {
            String value = hm.get(i);
            阿姨.add(value);
        }
        for (Integer i : three) {
            String value = hm.get(i);
            十七张牌能秒杀卢本伟.add(value);
        }
        for (Integer i : last) {
            String value = hm.get(i);
            底牌.add(value);
        }

        //看牌,打印集合
        System.out.println("卢本伟:" + 卢本伟);
        System.out.println("阿姨:" + 阿姨);
        System.out.println("十七张牌能秒杀卢本伟:" + 十七张牌能秒杀卢本伟);
        System.out.println("底牌:" + 底牌);
    }
}
